/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.entidade.protocolo;

import br.com.deployment.entidade.acesso.Usuario;
import br.com.deployment.entidade.empresa.Cartorio;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Digits;
import javax.validation.constraints.NotNull;

/**
 *
 * @author roniere
 */
@Entity
public class Pagamento implements Serializable  {
    
    @Id
    @SequenceGenerator(name = "seq_pagamentos", sequenceName = "seq_pagamentos", allocationSize=1 )
    @GeneratedValue(generator = "seq_pagamentos", strategy = GenerationType.SEQUENCE)
    private int id;
    
    @Column(scale= 2, precision=19)
    @NotNull
    @DecimalMin( value = "0.00" )
    @Digits( fraction = 2, integer = 10 )
    private BigDecimal valor;
    
    @Column(length=1000)
    private String descricao;
    
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataPag;
    
    @OneToOne
    @NotNull
    private Usuario executante;
    
    @Column
    private String titulo;
    
    @Column
    private String interessado;
    
    @Column
    private boolean ativo;

    @OneToOne
    private Cartorio cartorio;

    public Cartorio getCartorio() {
        return cartorio;
    }

    public void setCartorio(Cartorio cartorio) {
        this.cartorio = cartorio;
    }
    
    
    
    public boolean isAtivo() {
        return ativo;
    }

    public String getInteressado() {
        return interessado;
    }

    public void setInteressado(String interessado) {
        this.interessado = interessado;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public Date getDataPag() {
        return dataPag;
    }

    public void setDataPag(Date dataPag) {
        this.dataPag = dataPag;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public Usuario getExecutante() {
        return executante;
    }

    public void setExecutante(Usuario executante) {
        this.executante = executante;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public BigDecimal getValor() {
        return valor;
    }

    public void setValor(BigDecimal valor) {
        this.valor = valor;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Pagamento other = (Pagamento) obj;
        if (this.id != other.id) {
            return false;
        }
        if (this.valor != other.valor && (this.valor == null || !this.valor.equals(other.valor))) {
            return false;
        }
        if ((this.descricao == null) ? (other.descricao != null) : !this.descricao.equals(other.descricao)) {
            return false;
        }
        if (this.dataPag != other.dataPag && (this.dataPag == null || !this.dataPag.equals(other.dataPag))) {
            return false;
        }
        if (this.executante != other.executante && (this.executante == null || !this.executante.equals(other.executante))) {
            return false;
        }
        if (this.ativo != other.ativo) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 97 * hash + this.id;
        hash = 97 * hash + (this.valor != null ? this.valor.hashCode() : 0);
        hash = 97 * hash + (this.descricao != null ? this.descricao.hashCode() : 0);
        hash = 97 * hash + (this.dataPag != null ? this.dataPag.hashCode() : 0);
        hash = 97 * hash + (this.executante != null ? this.executante.hashCode() : 0);
        hash = 97 * hash + (this.ativo ? 1 : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "Pagamentos{" + "id=" + id + ", valor=" + valor + ", descricao=" + descricao + ", dataPag=" + dataPag + ", executante=" + executante + ", ativo=" + ativo + '}';
    }
    
    
    
    
}
